package wh.双色球摇号;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;

/**
 * 随机摇出1-33之间的7个数字，不可以重复。
 * 由于双色球是依次摇号，存在一定的顺序，set集合不能保证存储元素的顺序，但可保证存储元素的不可重复性，因此test1采用set集合
 * 由于ArrayList集合支持存储相同元素，所以每次往集合中储存双色球号码之前，都要对集合进行遍历
 */
public class SetAndList {
    public static void main(String[] args) {
        setTest();
        listTest();
    }

    public static void setTest(){
        HashSet<Integer> set = new HashSet<Integer>();
        Random random = new Random();
        System.out.println("一期中奖号码为:");
        while (set.size() < 7){
            //带参的nextInt(int x)则会生成一个范围在0~x(不包含X)内的任意正整数
            set.add(random.nextInt(33) + 1);
        }
        for (Integer el : set) {
            System.out.println(el);
        }
    }


    public static void listTest(){
        ArrayList<Integer> arr = new ArrayList<Integer>();
        Random random = new Random();
        System.out.println("二期中奖号码为:");
        while (arr.size() < 7){
            int randomNum = random.nextInt(33) + 1;
            Iterator<Integer> iterator = arr.iterator();
            //这里需要使用迭代器的remove方法，否则异常报错
            while (iterator.hasNext()){
                if (iterator.next() == randomNum){
                    iterator.remove();
                }
            }
            arr.add(randomNum);
        }
        for (Integer el : arr) {
            System.out.println(el);
        }
    }


}
